package com.terabits.smartriver.util;

import java.util.Date;

/**
 * Created by Yin on 2019/5/14 0014
 */
public class DataReduction {

    /**
     * 切除符合协议的帧头帧尾
     *
     * @param data 原始通信数据
     * @return
     */
    public static String ResctionHeadAndFeet(String data) {
        int headeIndex=data.indexOf(":");
      //  int feetIndex=data.lastIndexOf(";",data.lastIndexOf(";")-1);
        int feetIndex=data.lastIndexOf(";");

        return data.substring(headeIndex+1,feetIndex);
    }

    /**
     * 切除符合协议的帧头帧尾————本地测试方法
     *
     * @param data
     * @return
     */
    public static String ResctionHeadAndFeet_test(String data) {
        return data.substring(2, data.length() - 4);
    }

    /**
     * 返回通信CRC校验码
     *
     * @param data
     * @return
     */
    public static String ResctionCRCCode(String data) {
        return data.substring(39, data.length());
    }

    /**
     * 返回通信和校验码
     *
     * @param data
     * @return
     */
    public static String ResctionSUMCode(String data) {
        return data.substring(39, data.length());
    }

    /**
     * 返回通信内容，除去校验码
     *
     * @param data
     * @return
     */
    public static String ResctionData(String data) {
        return data.substring(17);
    }

    /**
     * 返回不带IMEI的数据
     *
     * @param data
     * @return
     */
    public static String ResctionDataNoID(String data) {
        int imeiIndex = data.indexOf(";");
        return data.substring(imeiIndex + 1);
    }

    /**
     * 返回设备唯一ID
     *
     * @param data
     * @return
     */
    public static String ResctionID(String data) {
        int imeiIndex = data.indexOf(";");
        return data.substring(0, imeiIndex);
    }

    /**
     * 返回数据类型
     *
     * @param data
     * @return
     */
    public static String ResctionType(String data) {
        return data.substring(0, 1);
    }

    /**
     * 返回长度 时间 站点号
     *
     * @param data
     * @return
     */
    public static String ResctionOther(String data) {
        return data.substring(0, 28);
    }

    /**
     * 返回实际内容值
     *
     * @param data
     * @return
     */
    public static String ResctionRealData(String data) {
        return data.substring(28);
    }


    /**
     * 返回上报时间
     *
     * @param data
     * @return
     */
    public static String ResctionTime(String data) {
        String timeStr = data.substring(10, 22);
        Date time = DateUtils.StringToDate(timeStr, "yyMMddHHmmss");

        return DateUtils.DateToString(time, null);

    }
}
